! ###############################################################
! ###############################################################
! ###                                                         ###
! ###  IOMD top level model                                   ###
! ###                                                         ###
! ###  Created 11/8/92: David Flynn                           ###
! ###                                                         ###
! ###                                          s               ###
! ###############################################################
! ###############################################################
! ###  Comments:                                              ###
! ###   I have adopted a different style to build this model: ###
! ###   - signals are grouped by functionality                ###
! ###   - I/O's and O/P's appear in a single causal list      ###
! ###     rather than split into o/p list                     ###
! ###  Revision History:                                      ###
! ###   14/8/92: DWF : non-inverting output buffers!          ###
! ###                : rm Nrefresh, add Niext, mv (r)clk(16)  ###
! ###   19/8/92: DWF : remove seq                             ###
! ###   25/8/92: DWF : SPEC E. signal changes                 ###
! ###   02/9/92: DWF : speed up pads slightly (run at 64MHz)  ###
! ###   16/9/92: DWF : 2nd processor interface added to IOMD  ###
! ###   2/10/92: AS  : Changed clk8 to ref8m                  ###
! ###   7/10/92: AS  : Added rclk output                      ###
! ###   5/11/92: AS  : Make Nbl an input, not an output!      ###
! ###  10/11/92: SAS : Added pullups to id, iicc, iicd        ###
! ###  25/11/92: AS  : Removed pullups to id, iicc, and iicd  ###
! ###  15/12/92: WO  : removed Nirqin and made pad O/P only   ###
! ###                  tied off Nentdo                        ###
! ###  23/12/92: WO  : changed SBuff to Sgate1 in IOPAD cells ###
! ###                  as SBuff models Z0->1 as 0->U1 !       ###
! ###  20/1/93 : AS  : Added boundary scan blocks             ###
! ###   1/2/93   WO    export/import sigs for test purposes   ###
! ###############################################################

FROM iomd.iomdcore IMPORT IOMDcore

CONST JTAGID = "<1D4E706F>" ! JTAG ID for IOMD made by Plessey

FROM StdParts.TriDrive  IMPORT $SBuff, $NSBuff, $BBuff, $NBBuff
FROM StdParts.Misc      IMPORT $SPullup, $Sink
FROM StdParts.Gates     IMPORT $SGate1, $SGate2
FROM JTAG.TAPcore       IMPORT  TAPcore
FROM JTAG.JTAGBlksC     IMPORT  $BSIcell, $BSOcell, $BSOBcell, $BSIBcell,
				$BSIOcell,$BSIOBcell, $BSOutNencell,
				$BSInencell, $BSInnencell, $BSprstcell


! Global constant input pad delay
CONST IOMDTIN = ns_2

! JTAG delays
CONST IOMDTBSOUT = ns_2
CONST IOMDTBSIN  = ns_1
CONST IOMDTBSEN  = ns_1

!4ma hsrl: O = 6.0 + .06/pF, E = 5.5: Nromcs Nprog Nrbe Nblr Npboe Nccs Ncdack Nsccs Nsio Nsndak Nvidak Nsndcs Nspdack Nscdack Tdo id iicd iicc kclk kdata 
!4ma 0srl: O = 2.3 + 0.06/pF, E = 1.7: pclk Nblw
!6ma lsrl: O = 3.5 + 0.04/pF, E = 2.8: rclk 
!6ma msrl: O = 5.0 + 0.04/pF, E = 4.0: dbe Nirq Nwe[1] Ndt[1:0] Nvras dsf ref8m clk2 Niorq Nwbe Nior Niow lrnw Neasis Nms Ndack[3:0] tc Nse Ncdoe sc clk16 Nfiq 
!6ma hsrl: O = 7.0 + 0.04/pF, E = 5.7: d[31:0] bd[15:0] Nreset 
!8ma lsrl: O = 2.6 + 0.025/pF, E = 2.7: mclk Nras[3:0] Ncas[3:0]
!12ma msrl: O = 6.5 + 0.02/pF, E = 5.8: Nwe[0] ra[11:0]



! ###############################################################
! generic input pad
! ###############################################################
BLOCK IPAD ({IN} pad, {OUT} sigin)
 bufin = $SBuff (pad, Vss) => sigin WITH(delay=IOMDTIN)
END {IPAD}

! ###############################################################
! special input bundles
BLOCK IPAD2 ({IN} pad[1:0],{OUT} sigin[1:0])
 bufin = $BBuff (pad[1:0], Vss) => sigin[1:0] WITH(delay=IOMDTIN)
END {IPAD2}

BLOCK IPAD4 ({IN} pad[3:0],{OUT} sigin[3:0])
 bufin = $BBuff (pad[3:0], Vss) => sigin[3:0] WITH(delay=IOMDTIN)
END {IPAD4}

BLOCK IPAD29 ({IN} pad[28:0],{OUT} sigin[28:0])
 bufin = $BBuff (pad[28:0], Vss) => sigin[28:0] WITH(delay=IOMDTIN)
END {IPAD29}


! ###############################################################
! generic output pads: various delays to reflect loading
! ###############################################################

BLOCK OPAD01_04 ({OUT} pad, {IN} Nen, {IN} sigout)
 bufout = $SBuff(sigout, Nen)=> pad WITH (delay=(prop=ns_4, enable=ns_4, HiZ=ns_4))
END {OPAD01_04}

BLOCK OPAD01_05 ({OUT} pad, {IN} Nen, {IN} sigout)
 bufout = $SBuff(sigout, Nen)=> pad WITH (delay=(prop=ns_5, enable=ns_5, HiZ=ns_5))
END {OPAD01_05}

BLOCK OPAD01_07 ({OUT} pad, {IN} Nen, {IN} sigout)
 bufout = $SBuff(sigout, Nen)=> pad WITH (delay=(prop=ns_7, enable=ns_7, HiZ=ns_7))
END {OPAD01_07}

BLOCK OPAD01_08 ({OUT} pad, {IN} Nen, {IN} sigout)
 bufout = $SBuff(sigout, Nen)=> pad WITH (delay=(prop=ns_8, enable=ns_8, HiZ=ns_8))
END {OPAD01_08}

BLOCK OPAD01_09 ({OUT} pad, {IN} Nen, {IN} sigout)
 bufout = $SBuff(sigout, Nen)=> pad WITH (delay=(prop=ns_9, enable=ns_9, HiZ=ns_9))
END {OPAD01_09}

BLOCK OPAD01_13 ({OUT} pad, {IN} Nen, {IN} sigout)
 bufout = $SBuff(sigout, Nen)=> pad WITH (delay=(prop=ns_13, enable=ns_13, HiZ=ns_13))
END {OPAD01_13}

! Default for output pads whose signal timing is not of special interest/worry
BLOCK OPAD01_xx (p,e,o) buffout = OPAD01_08 (p,e,o) END

! ###############################################################
! special output bundles

BLOCK OPAD02_08 ({OUT} pad[1:0],{IN} Nen,{IN} sigout[1:0])
 bufout = $BBuff(sigout[1:0], Nen)=> pad[1:0] WITH (delay=(prop=ns_8, enable=ns_8, HiZ=ns_8))
END {OPAD02_08}

BLOCK OPAD04_06 ({OUT} pad[3:0],{IN} Nen,{IN} sigout[3:0])
 bufout = $BBuff(sigout[3:0], Nen)=> pad[3:0] WITH (delay=(prop=ns_6, enable=ns_6, HiZ=ns_6))
END {OPAD04_06}

BLOCK OPAD12_14 ({OUT} pad[11:0],{IN} Nen,{IN} sigout[11:0])
 bufout = $BBuff(sigout[11:0], Nen)=> pad[11:0] WITH (delay=(prop=ns_14, enable=ns_14, HiZ=ns_14))
END {OPAD12_14}

! Default 4-wide output block for signals whose timing is not of particular interest
BLOCK OPAD04_xx ({OUT} pad[3:0],{IN} Nen,{IN} sigout[3:0])
 bufout = $BBuff(sigout[3:0], Nen)=> pad[3:0] WITH (delay=(prop=ns_8, enable=ns_8, HiZ=ns_8))
END {OPAD04_06}

! ###############################################################
! generic bidir pad: medium output loading assumed
! ###############################################################

BLOCK IOPAD ({OUT} pad, {IN} Nen, {IN} sigout, {OUT} sigin)
 bufout = $SBuff (sigout, Nen) => pad WITH (delay=(prop=ns_8, enable=ns_8, HiZ=ns_8))
 bufin = $SGate1 (pad) => sigin WITH (OP=BUFF, delay=IOMDTIN)
END {IOPAD}

! ###############################################################
! specials for busses

BLOCK IOPAD2 ({OUT} pad[1:0], {IN} Nen, {IN} sigout[1:0], {OUT} sigin[1:0])
 bufout = $BBuff(sigout[1:0], Nen)=> pad[1:0]
          WITH (delay=(prop=TOUT, enable=TENO, HiZ=THIZ))
 bufin  = $BBuff  (pad[1:0], Vss)    => sigin[1:0]
          WITH(delay=IOMDTIN)
END {IOPAD2}

BLOCK IOPAD04_07 ({OUT} pad[3:0], {IN} Nen, {IN} sigout[3:0], {OUT} sigin[3:0])
 bufout = $BBuff (sigout[3:0], Nen)=> pad[3:0] WITH (delay=(prop=ns_7, enable=ns_7, HiZ=ns_7))
 bufin  = $BBuff (pad[3:0], Vss) => sigin[3:0] WITH(delay=IOMDTIN)
END {IOPAD04_07}

BLOCK IOPAD16_15 ({OUT} pad[15:0],{IN} Nen,{IN} sigout[15:0],{OUT} sigin[15:0])
 bufout = $BBuff(sigout[15:0], Nen)=> pad[15:0] WITH (delay=(prop=ns_15, enable=ns_15, HiZ=ns_15))
 bufin  = $BBuff  (pad[15:0], Vss) => sigin[15:0] WITH(delay=IOMDTIN)
END {IOPAD16_15}


BLOCK IOPAD32 ({OUT} pad[31:0],{IN} Nen,{IN} sigout[31:0],{OUT} sigin[31:0])
 bufout = $BBuff(sigout[31:0], Nen)=> pad[31:0]
          WITH (delay=(prop=TOUT, enable=TENO, HiZ=THIZ))
 bufin  = $BBuff  (pad[31:0], Vss)    => sigin[31:0]
          WITH(delay=IOMDTIN)
END {IOPAD32}


! ###############################################################
! IOMD external interface
! ###############################################################


BLOCK IOMD(
! system signals
  {IN}  Xfrclk,     ! vector clock (dummy)
  {IN}  Xclk64,     ! 64MHz master clock
  {IN}  Xpor,       ! master Power On Reset (schmitt)
  {IO}  XNreset,    ! open drain Not RESET
! ARM600 interface
  {OUT} Xmclk,      ! CPU bus clock
  {IN}  XNmreq,     ! CPU Not mem req
  {IN}  XNpreq,     ! second processor Not mem req
  {OUT} Xrclk,      ! rclk output
  {IN}  Xa[28:0],   ! CPU address bus
  {IO}  Xd[31:0],   ! system Data bus
  {IN}  XNrw,       ! CPU Not read /write
  {IN}  XNbw,       ! CPU Not byte /word
  {OUT} Xdbe,       ! CPU data bus output enable
  {OUT} XNfiq,      ! CPU Not Fast Interrupt reQuest
  {OUT} XNirq,      ! CPU Not Interrupt Request
! DRAM/VRAM Interface
  {OUT} Xra[11:0],  ! multiplexed dRam Address lines
  {OUT} XNras[3:0], ! Not Row Address Strobes
  {OUT} XNvras,     ! Not Vram Row Address Strobes
  {OUT} XNcas[3:0], ! Not Column Address Strobes
  {OUT} XNwe[1:0],  ! Not Write Enable
  {OUT} XNdt[1:0],  ! Not Data Transfer {Output Enable}
  {OUT} Xsc,        ! Serial Clock
  {OUT} XNse,       ! Not Serial port Enable
  {OUT} XNcdoe,     ! Not Cursor (etc) Data buffer Output Enable
  {OUT}  Xdsf,      ! vram special function control signal
! VIDC20 interface
  {OUT} Xpclk,      ! memory busclock
  {IN}  Xqsf,       ! QSF from the VRAM
  {IN}  XNvidrq,    ! Not VIDeo ReQuest
  {IN}  Xvnc,       ! Video Not Cursor
  {IN}  Xflybk,     ! video FLYBacK
  {OUT} XNvidak,    ! Not VIDeo AcKnowledge
  {OUT} XNprog,     ! Not video PROGram strobe
  {IN}  XNsndrq,    ! Not SouND ReQuest
  {OUT} XNsndak,    ! Not SouND AcKnowledge
! system decodes
  {OUT} XNromcs,    ! Not ROM Chip Select
! IO :: interface
  {OUT} Xclk16,     ! (16MHz) reference clock (fast IO)
  {OUT} XNeasis,    ! Not Fast Expanded Address Space Interface Select
  {IN}  Xready,     ! Ready handshake
  {OUT} Xref8m,      ! 8MHz clock (slow IO)
  {OUT} XNiorq,     ! Not IO ReQuest
  {IN}  XNiogt,     ! Not IO GranT
  {OUT} XNms,       ! Not io Module Select
  {IO}  Xbd[15:0],  ! 16-bit io Bus Data
! IO DMA
  {IN}  Xdrq[3:0],  ! Dma ReQuest signals
  {OUT} XNdack[3:0], ! Dma AcKnowledge signals
  {OUT} Xtc,        ! Terminal Count
! IO :: buffer/latch control
  {OUT} XNwbe,      ! Not Write data (latch) Buffer Enable
  {OUT} XNrbe,      ! Not Read data (latch) Buffer Enable
  {OUT} XNblw,      ! Not write data Buffer latch Enable
  {OUT} XNblr,      ! Not read data Buffer Latch control
  {IN}  XNbl,       ! Not read Buffer Latch enable
! IO :: handshake signals
  {OUT} Xclk2,      ! synchronous peripheral CLocK 2 MHz
  {OUT} XNior,      ! Not IO Read strobe
  {OUT} XNiow,      ! Not IO Write strobe
  {OUT} XNpboe,     ! Not Podule Bus Output Enable
  {OUT} XNccs,      ! Not Combo Chip Select
  {OUT} XNcdack,    ! Not Combo DACK select
  {OUT} XNsccs,     ! Not SCsi Chip Select
  {OUT} XNsio,      ! NOT Select general purpose IO
  {OUT} Xlrnw,      ! Latched Not Read/Write direction
! IO :: interrupt inputs
  {IN}  XNpfiq,     ! Not Podule FIQ
  {IN}  XNpirq,     ! Not Podule IRQ
  {IN}  XNsintr,    ! Not Sound INTeRrupt
  {IN}  XNscirq,    ! Not SCsi IRQ
  {IN}  XNfintr,    ! Floppy INTeRupt
  {IN}  XNindex,    ! floppy INDEX interrupt
  {IN}  Xfdrq,      ! Floppy DRQ
  {IN}  Xpintr,     ! Printer INTeRrupt
  {IN}  XNiext,     ! NOT 486 coproc INTeRrupt
! IO :: control I/Os
  {IO}  Xid,        ! unique ID one-wire interface
  {IO}  Xiicc,      ! I-squared-C Clock
  {IO}  Xiicd,      ! I-squared-C Data
! IO :: keyboard
  {IO}  Xkclk,      ! bidir open drain Keyboard CLocK 
  {IO}  Xkdata,     ! bidir open drain Keyboard DATA
! IO :: mouse
  {IN}  Xmsx[1:0],  ! MouSe X quadrature signals
  {IN}  Xmsy[1:0],  ! MouSe Y quadrature signals
! AD1848 sound codec interface
  {IN}  Xcdrq,      ! Capture (input) drq
  {IN}  Xpdrq,      ! Playback (output) drq
  {OUT} XNsndcs,    ! Chip select
  {OUT} XNscdack,   ! Not Sound Capture dack
  {OUT} XNspdack,   ! Not Sound Playback dack
! JTAG
  {IN}  Xtck,       ! Test ClocK
  {IN}  Xtms,       ! Test Mode Select
  {IN}  Xtdi,       ! Test Data Input
  {IN}  Nfakerst,   ! Boundary scan fake power on reset
  {OUT} Xtdo,       ! Test Data Output
  {OUT} NenNreset,  ! exported only for test vectors
  {OUT} Nendoutlo,  ! exported only for test vectors
  {OUT} Nendouthi,  ! exported only for test vectors
  {OUT} Nenbd,      ! exported only for test vectors
  {OUT} Nenid,      ! exported only for test vectors
  {OUT} Neniicc,    ! exported only for test vectors
  {OUT} Neniicd,    ! exported only for test vectors
  {OUT} Nenkclk,    ! exported only for test vectors
  {OUT} Nenkdata,   ! exported only for test vectors
  {OUT} por)        ! exported only for test vectors

s1 = $Sink(s1(Xfrclk,Xfrclk))

! ###############################################################
! IOMD pad interface
! ###############################################################


! system signals
  p001 = IPAD(Xclk64, Tclk64)
  p002 = IPAD(Xpor, Tpor)
  p003 = IOPAD(XNreset, TNenNreset, TNresetout, TNresetin)

! ARM600 interface
  p004 = OPAD01_05(Xmclk, TforceHiZ, Tmclk)
  p005 = IPAD(XNmreq, TNmreq)
  p006 = IPAD(XNpreq, TNpreq)
  p006a= OPAD01_xx(Xrclk, TforceHiZ, Trclk)  ! unused for now
  p007 = IPAD29(Xa[28:0], Ta[28:0])
  p008a= IOPAD16_15(Xd[15:0], TNendoutlo, Tdout[15:0], Tdin[15:0])
  p008b= IOPAD16_15(Xd[31:16], TNendouthi, Tdout[31:16], Tdin[31:16])
  p009 = IPAD(XNrw, TNrw)
  p010 = IPAD(XNbw, TNbw)
  p011 = OPAD01_08(Xdbe, TforceHiZ, Tdbe)
  p012 = IOPAD(XNfiq, TNenfiq, TNfiq, TNfiqin)
  p013 = OPAD01_xx(XNirq, TforceHiZ, TNirq)

! DRAM/VRAM Interface
  p014 = OPAD12_14(Xra[11:0], TforceHiZ,Tra[11:0])
  p015 = OPAD04_06(XNras[3:0], TforceHiZ,TNras[3:0])
  p016 = OPAD01_09(XNvras, TforceHiZ,TNvras)
  p017 = IOPAD04_07(XNcas[3:0], TforceHiZ,TNcas[3:0], TNfcas[3:0])

  ! Nwe[0] and Nwe[1] have different loadings & hence timings because [1] is used only for VRAM
  p018a = OPAD01_13(XNwe[0], TforceHiZ, TNwe[0])
  p018b = OPAD01_08(XNwe[1], TforceHiZ, TNwe[1]) ! to upper VRAM bank only

  p019 = OPAD02_08(XNdt[1:0], TforceHiZ,TNdt[1:0])
  p020 = OPAD01_09(Xsc, TforceHiZ,Tsc)    ! to both VRAM banks
  p021 = OPAD01_08(XNse, TforceHiZ,TNse)  ! to lower VRAM bank only - assumed timing 8ns
  p022 = OPAD01_09(XNcdoe, TforceHiZ,TNcdoe)
  p023 = OPAD01_09(Xdsf, TforceHiZ, Tdsf)    ! to both VRAM banks

! VIDC20 interface
  p025 = OPAD01_04(Xpclk, TforceHiZ,Tpclk)
  p025a= IPAD(Xqsf, Tqsf)
  p026 = IPAD(XNvidrq, TNvidrq)
  p027 = IPAD(Xvnc, Tvnc)
  p028 = IPAD(Xflybk, Tflybk)
  p029 = OPAD01_04(XNvidak, TforceHiZ,TNvidak)
  p030 = OPAD01_xx(XNprog, TforceHiZ,TNprog)
  p031 = IPAD(XNsndrq, TNsndrq)
  p032 = OPAD01_04(XNsndak, TforceHiZ,TNsndak)

! system decodes
  p033 = OPAD01_09(XNromcs, TforceHiZ,TNromcs)

! IO :: interface
  p034 = OPAD01_xx(Xclk16, TforceHiZ,Tclk16)
  p035 = OPAD01_xx(XNeasis, TforceHiZ,TNeasis)
  p036 = IPAD(Xready, Tready)
  p037 = OPAD01_xx(Xref8m, TforceHiZ,Tref8m)
  p038 = OPAD01_xx(XNiorq, TforceHiZ,TNiorq)
  p039 = IPAD(XNiogt, TNiogt)
  p040 = OPAD01_xx(XNms, TforceHiZ,TNms)
  p041 = IOPAD16_15(Xbd[15:0], TNenbd, Tbdout[15:0], Tbdin[15:0])

! IO DMA
  p042 = IPAD4(Xdrq[3:0], Tdrq[3:0])
  p043 = OPAD04_xx(XNdack[3:0], TforceHiZ,TNdack[3:0])
  p044 = OPAD01_xx(Xtc, TforceHiZ,Ttc)

! IO :: buffer/latch control
  p045 = OPAD01_07(XNwbe, TforceHiZ,TNwbe)
  p046 = OPAD01_09(XNrbe, TforceHiZ,TNrbe)
  p047 = OPAD01_05(XNblw, TforceHiZ,TNblw)
  p048 = OPAD01_09(XNblr, TforceHiZ,TNblr)
  p049 = IPAD(XNbl, TNbl)

! IO :: handshake signals
  p050 = OPAD01_xx(Xclk2, TforceHiZ,Tclk2)
  p051 = OPAD01_xx(XNior, TforceHiZ,TNior)
  p052 = OPAD01_xx(XNiow, TforceHiZ,TNiow)
  p053 = OPAD01_xx(XNpboe, TforceHiZ,TNpboe)
  p054 = OPAD01_xx(XNccs, TforceHiZ,TNccs)
  p055 = OPAD01_xx(XNcdack, TforceHiZ,TNcdack)
  p056 = OPAD01_xx(XNsccs, TforceHiZ,TNsccs)
  p057 = OPAD01_xx(XNsio, TforceHiZ,TNsio)
  p058 = OPAD01_xx(Xlrnw, TforceHiZ,Tlrnw)

! IO :: interrupt inputs
  p059 = IPAD(XNpfiq, TNpfiq)
  p060 = IPAD(XNpirq, TNpirq)
  p061 = IPAD(XNsintr, TNsintr)
  p062 = IPAD(XNscirq, TNscirq)
  p063 = IPAD(XNfintr, TNfintr)
  p064 = IPAD(XNindex, TNindex)
  p065 = IPAD(Xfdrq, Tfdrq)
  p066 = IPAD(Xpintr, Tpintr)
  p066a = IPAD(XNiext, TNiext)

! IO :: control I/Os
  p067 = IOPAD(Xid, TNenid, Tidout, Tidin)
  p068 = IOPAD(Xiicc, TNeniicc, Tiiccout, Tiiccin)
  p069 = IOPAD(Xiicd, TNeniicd, Tiicdout, Tiicdin)
!  pul1 = $SPullup(Xiicc) WITH (delay=ns_100)
!  pul2 = $SPullup(Xiicd) WITH (delay=ns_100)
!  pul3 = $SPullup(Xid)   WITH (delay=ns_100)

! IO :: keyboard
  p070 = IOPAD(Xkclk, TNenkclk, Tkclkout, Tkclkin)
  p071 = IOPAD(Xkdata, TNenkdata, Tkdataout, Tkdatain)

! IO :: mouse
  p072 = IPAD2(Xmsx[1:0], Tmsx[1:0])
  p073 = IPAD2(Xmsy[1:0], Tmsy[1:0])

! AD1848 sound codec interface
  p074 = IPAD(Xcdrq, Tcdrq)
  p075 = IPAD(Xpdrq, Tpdrq)
  p076 = OPAD01_xx(XNsndcs, TforceHiZ, TNsndcs)
  p077 = OPAD01_xx(XNscdack, TforceHiZ, TNscdack)
  p078 = OPAD01_xx(XNspdack, TforceHiZ, TNspdack)

! JTAG
  p079 = IPAD(Xtck, Tck)
  p080 = IPAD(Xtms, Tms)
  p081 = IPAD(Xtdi, Tdi)
  p082 = OPAD01_xx(Xtdo, Ntdoen, Tdo)


! ###############################################################
! IOMD core interface
! ###############################################################

core = IOMDcore(
! system signals
  {IN}  clk64,
  {IN}  por,
  {OUT} NenNreset,
  {OUT} Nresetout,
  {IN}  Nresetin,
  {OUT} forceHiZ,
! ARM600 interface
  {OUT} mclk,
  {IN}  Nmreq,
  {IN}  Npreq,
  {OUT} rclk,
  {IN}  a[28:0],
  {OUT} Nendoutlo,
  {OUT} Nendouthi,
  {IN}  din[31:0],
  {OUT} dout[31:0],
  {IN}  Nrw,
  {IN}  Nbw,
  {OUT} dbe,
  {OUT} Nfiq,
  {IN}  Nfiqin,
  {OUT} Nirq,
! DRAM/VRAM Interface
  {OUT} ra[11:0],
  {IN}  Nfcas[3:0],
  {OUT} Nras[3:0],
  {OUT} Nvras,
  {OUT} Ncas[3:0],
  {OUT} Nwe[1:0],
  {OUT} Ndt[1:0],
  {OUT} sc,
  {OUT} Nse,
  {OUT} Ncdoe,
  {IN}  dsf,
! VIDC20 interface
  {OUT} pclk,
  {IN}  qsf,
  {IN}  Nvidrq,
  {IN}  vnc,
  {IN}  flybk,
  {OUT} Nvidak,
  {OUT} Nprog,
  {IN}  Nsndrq,
  {OUT} Nsndak,
! system decodes
  {OUT} Nromcs,
! IO :: interface
  {OUT} clk16,
  {OUT} Neasis,
  {IN}  ready,
  {OUT} ref8m,
  {OUT} Niorq,
  {IN}  Niogt,
  {OUT} Nms,
  {OUT} Nenbd,
  {OUT} bdout[15:0],
  {IN}  bdin[15:0],
! IO DMA
  {IN}  drq[3:0],
  {OUT} Ndack[3:0],
  {OUT} tc,
! IO :: buffer/latch control
  {OUT} Nwbe,
  {OUT} Nrbe,
  {OUT} Nblw,
  {OUT} Nblr,
  {IN}  Nbl,
! IO :: handshake signals
  {OUT} clk2,
  {OUT} Nior,
  {OUT} Niow,
  {OUT} Npboe,
  {OUT} Nccs,
  {OUT} Ncdack,
  {OUT} Nsccs,
  {OUT} Nsio,
  {OUT} lrnw,
! IO :: interrupt inputs
  {IN}  Npfiq,
  {IN}  Npirq,
  {IN}  Nsintr,
  {IN}  Nscirq,
  {IN}  Nfintr,
  {IN}  Nindex,
  {IN}  fdrq,
  {IN}  pintr,
  {IN}  Niext,
! IO :: control I/Os
  {OUT} Nenid,
  {OUT} idout,
  {IN}  idin,
  {OUT} Neniicc,
  {OUT} iiccout,
  {IN}  iiccin,
  {OUT} Neniicd,
  {OUT} iicdout,
  {IN}  iicdin,
! IO :: keyboard
  {OUT} Nenkclk,
  {OUT} kclkout,
  {IN}  kclkin,
  {OUT} Nenkdata,
  {OUT} kdataout,
  {IO}  kdatain,
! IO :: mouse
  {IN}  msx[1:0],
  {IN}  msy[1:0],
! AD1848 sound codec interface
  {IN}  cdrq,
  {IN}  pdrq,
  {OUT} Nsndcs,
  {OUT} Nscdack,
  {OUT} Nspdack
)

! **** TAP controller ****

 tap = TAPcore (Tdi, Tms, Tck, NTrst, BSreg251, tirin(Vss, Vss))
            => (Tdo, driveout, ecapclkbs, icapclkbs, shclkbs,
                pclkbs, rstclkbs, bstck2, Ntdoen, BSreg0, Nhighz)

! **** Boundary scan power-on reset ****

  prst    = $BSprstcell(Tms)          => Nponrst         
  frst    = $SGate2(Nponrst,Nfakerst) => NTrst WITH (op=AND,  delay=ns_1) 

! **** Boundary Scan register ****

 bsd1 = 	$BSOcell(Nwbe, BSreg0,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNwbe)
                  => (BSreg1)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd2 =		$BSOcell(Nrbe, BSreg1,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNrbe)
                  => (BSreg2)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd3 =		$BSOcell(Nblw, BSreg2,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNblw)
                  => (BSreg3)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd4 =		$BSOcell(Nblr, BSreg3,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNblr)
                  => (BSreg4)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd5 =		$BSOcell(clk2, BSreg4,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Tclk2)
                  => (BSreg5)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd6 =		$BSOutNencell(forceHiZ, BSreg5,
		     driveout,ecapclkbs,icapclkbs,shclkbs,
		     pclkbs,bstck2,rstclkbs,Nhighz,
                     TforceHiZ)
                  => (BSreg6)  WITH (delay=(bsoutnencell=IOMDTBSEN))

 bsd7 =		$BSOcell(Npboe, BSreg6,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNpboe)
                  => (BSreg7)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd8 =		$BSOcell(lrnw, BSreg7,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Tlrnw)
                  => (BSreg8)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd9 =		$BSIOBcell(Tbdin[0:11], bdout[0:11], BSreg8,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     bdin[0:11], Tbdout[0:11])
                  => (BSreg32)  WITH (delay=(bsiobcell=IOMDTBSOUT))

 bsd33 =	$BSOutNencell(Nenbd, BSreg32,
		     driveout,ecapclkbs,icapclkbs,shclkbs,
		     pclkbs,bstck2,rstclkbs,Nhighz,
                     TNenbd)
                  => (BSreg33)  WITH (delay=(bsoutnencell=IOMDTBSEN))

 bsd34 =	$BSOcell(clk16, BSreg33,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Tclk16)
                  => (BSreg34)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd35 =	$BSOcell(ref8m, BSreg34,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Tref8m)
                  => (BSreg35)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd36 =	$BSIOBcell(Tbdin[12:15], bdout[12:15], BSreg35,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     bdin[12:15], Tbdout[12:15])
                  => (BSreg43)  WITH (delay=(bsiobcell=IOMDTBSOUT))

 bsd44 =	$BSOcell(Neasis, BSreg43,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNeasis)
                  => (BSreg44)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd45 =	$BSOcell(Niorq, BSreg44,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNiorq)
                  => (BSreg45)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd46 =	$BSIcell(TNiogt, BSreg45,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Niogt)
                  => (BSreg46)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd47 =	$BSIcell(TNbl, BSreg46,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Nbl)
                  => (BSreg47)  WITH (delay=(bsicell=IOMDTBSOUT))

 bsd48 =	$BSIcell(TNindex, BSreg47,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Nindex)
                  => (BSreg48)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd49 =	$BSIBcell(Tdrq[0:3], BSreg48,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     drq[0:3])
                  => (BSreg52)  WITH (delay=(bsibcell=IOMDTBSIN))

 bsd53 =	$BSOcell(Nior, BSreg52,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNior)
                  => (BSreg53)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd54 =	$BSOcell(Niow, BSreg53,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNiow)
                  => (BSreg54)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd55 =	$BSIcell(Tclk64, BSreg54,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     clk64)
                  => (BSreg55)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd56 =	$BSIcell(Tpor, BSreg55,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     por)
                  => (BSreg56)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd57 =	$BSOutNencell(NenNreset, BSreg56,
		     driveout,ecapclkbs,icapclkbs,shclkbs,
		     pclkbs,bstck2,rstclkbs,Nhighz,
                     TNenNreset)
                  => (BSreg57)  WITH (delay=(bsoutnencell=IOMDTBSOUT))

 bsd58 =	$BSIOcell(TNresetin, Nresetout, BSreg57,
		     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
		     Nresetin, TNresetout)
                  => (BSreg59)  WITH (delay=(bsiocell=IOMDTBSOUT))

 bsd60 =	$BSOcell(Nms, BSreg59,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNms)
                  => (BSreg60)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd61 =	$BSIcell(Tready, BSreg60,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     ready)
                  => (BSreg61)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd62 =	$BSOutNencell(Nenid, BSreg61,
		     driveout,ecapclkbs,icapclkbs,shclkbs,
		     pclkbs,bstck2,rstclkbs,Nhighz,
                     TNenid)
                  => (BSreg62)  WITH (delay=(bsoutnencell=IOMDTBSOUT))

 bsd63 =	$BSIOcell(Tidin, idout, BSreg62,
		     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
		     idin, Tidout)
                  => (BSreg64)  WITH (delay=(bsiocell=IOMDTBSOUT))

 bsd65 =	$BSOBcell(Ndack[0:3], BSreg64,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNdack[0:3])
                  => (BSreg68)  WITH (delay=(bsobcell=IOMDTBSOUT))

 bsd69 =	$BSOcell(Nsio, BSreg68,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNsio)
                  => (BSreg69)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd70 =	$BSOBcell(Ndt[0:1], BSreg69,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNdt[0:1])
                  => (BSreg71)  WITH (delay=(bsobcell=IOMDTBSOUT))

 bsd72 =	$BSOcell(Nse, BSreg71,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNse)
                  => (BSreg72)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd73 =	$BSOcell(dsf, BSreg72,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Tdsf)
                  => (BSreg73)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd74 =	$BSOcell(Nvras, BSreg73,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNvras)
                  => (BSreg74)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd75 =	$BSOcell(sc, BSreg74,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Tsc)
                  => (BSreg75)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd76 =	$BSOcell(pclk, BSreg75,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Tpclk)
                  => (BSreg76)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd77 =	$BSIcell(Tqsf, BSreg76,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     qsf)
                  => (BSreg77)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd78 =	$BSIcell(Tflybk, BSreg77,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     flybk)
                  => (BSreg78)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd79 =	$BSIcell(Tvnc, BSreg78,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     vnc)
                  => (BSreg79)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd80 =	$BSIcell(TNsndrq, BSreg79,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Nsndrq)
                  => (BSreg80)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd81 =	$BSOcell(Nsndak, BSreg80,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNsndak)
                  => (BSreg81)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd82 =	$BSIcell(TNvidrq, BSreg81,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Nvidrq)
                  => (BSreg82)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd83 =	$BSOcell(Nvidak, BSreg82,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNvidak)
                  => (BSreg83)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd84 =	$BSOcell(Ncdoe, BSreg83,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNcdoe)
                  => (BSreg84)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd85 =	$BSOcell(Nprog, BSreg84,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNprog)
                  => (BSreg85)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd86 =	$BSOBcell(ra[0:11], BSreg85,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Tra[0:11])
                  => (BSreg97)  WITH (delay=(bsobcell=IOMDTBSOUT))

 bsd98 =	$BSOBcell(Nras[3:2], BSreg97,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNras[3:2])
                  => (BSreg99)  WITH (delay=(bsobcell=IOMDTBSOUT))

 bsd100 =	$BSOcell(Nwe[1], BSreg99,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNwe[1])
                  => (BSreg100)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd101 =	$BSOBcell(Nras[1:0], BSreg100,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNras[1:0])
                  => (BSreg102)  WITH (delay=(bsobcell=IOMDTBSOUT))

 bsd103 =	$BSOcell(Nwe[0], BSreg102,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNwe[0])
                  => (BSreg103)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd104 =	$BSIOBcell(TNfcas[0:3], Ncas[0:3], BSreg103,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Nfcas[0:3], TNcas[0:3])
                  => (BSreg111)  WITH (delay=(bsiobcell=IOMDTBSOUT))

 bsd112 =	$BSIcell(Tpdrq, BSreg111,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     pdrq)
                  => (BSreg112)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd113 =	$BSIcell(Tcdrq, BSreg112,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     cdrq)
                  => (BSreg113)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd114 =	$BSIBcell(Tmsy[1:0], BSreg113,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     msy[1:0])
                  => (BSreg115)  WITH (delay=(bsibcell=IOMDTBSIN))

 bsd116 =	$BSIBcell(Tmsx[1:0], BSreg115,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     msx[1:0])
                  => (BSreg117)  WITH (delay=(bsibcell=IOMDTBSIN))

 bsd118 =	$BSIcell(TNpirq, BSreg117,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Npirq)
                  => (BSreg118)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd119 =	$BSIcell(TNpfiq, BSreg118,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Npfiq)
                  => (BSreg119)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd120 =	$BSOcell(Nspdack, BSreg119,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNspdack)
                  => (BSreg120)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd121 =	$BSOcell(Nscdack, BSreg120,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNscdack)
                  => (BSreg121)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd122 =	$BSOcell(Nsndcs, BSreg121,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNsndcs)
                  => (BSreg122)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd123 =	$BSOcell(Nccs, BSreg122,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNccs)
                  => (BSreg123)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd124 =	$BSOcell(Nsccs, BSreg123,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNsccs)
                  => (BSreg124)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd125 =	$BSOcell(tc, BSreg124,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Ttc)
                  => (BSreg125)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd126 =	$BSOcell(Ncdack, BSreg125,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNcdack)
                  => (BSreg126)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd127 =	$BSOutNencell(Nenkdata, BSreg126,
		     driveout,ecapclkbs,icapclkbs,shclkbs,
		     pclkbs,bstck2,rstclkbs,Nhighz,
                     TNenkdata)
                  => (BSreg127)  WITH (delay=(bsoutnencell=IOMDTBSEN))

 bsd128 =	$BSIOcell(Tkdatain, kdataout, BSreg127,
		     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
		     kdatain, Tkdataout)
                  => (BSreg129)  WITH (delay=(bsiocell=IOMDTBSOUT))

 bsd130 =	$BSOutNencell(Nenkclk, BSreg129,
		     driveout,ecapclkbs,icapclkbs,shclkbs,
		     pclkbs,bstck2,rstclkbs,Nhighz,
                     TNenkclk)
                  => (BSreg130)  WITH (delay=(bsoutnencell=IOMDTBSEN))

 bsd131 =	$BSIOcell(Tkclkin, kclkout, BSreg130,
		     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
		     kclkin, Tkclkout)
                  => (BSreg132)  WITH (delay=(bsiocell=IOMDTBSOUT))

 bsd133 =	$BSIcell(TNscirq, BSreg132,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Nscirq)
                  => (BSreg133)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd134 =	$BSIcell(TNsintr, BSreg133,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Nsintr)
                  => (BSreg134)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd135 =	$BSIcell(TNfintr, BSreg134,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Nfintr)
                  => (BSreg135)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd136 =	$BSIcell(Tpintr, BSreg135,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     pintr)
                  => (BSreg136)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd137 =	$BSIcell(Tfdrq, BSreg136,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     fdrq)
                  => (BSreg137)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd138 =	$BSIcell(TNiext, BSreg137,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Niext)
                  => (BSreg138)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd139 =	$BSIOBcell(Tdin[0:15], dout[0:15], BSreg138,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     din[0:15], Tdout[0:15])
                  => (BSreg170)  WITH (delay=(bsiobcell=IOMDTBSOUT))

 bsd171 =	$BSOutNencell(Nendoutlo, BSreg170,
		     driveout,ecapclkbs,icapclkbs,shclkbs,
		     pclkbs,bstck2,rstclkbs,Nhighz,
                     TNendoutlo)
                  => (BSreg171)  WITH (delay=(bsoutnencell=IOMDTBSEN))

 bsd172 =	$BSIOBcell(Tdin[16:31], dout[16:31], BSreg171,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     din[16:31], Tdout[16:31])
                  => (BSreg203)  WITH (delay=(bsiobcell=IOMDTBSOUT))

 bsd204 =	$BSOutNencell(Nendouthi, BSreg203,
		     driveout,ecapclkbs,icapclkbs,shclkbs,
		     pclkbs,bstck2,rstclkbs,Nhighz,
                     TNendouthi)
                  => (BSreg204)  WITH (delay=(bsoutnencell=IOMDTBSEN))

 bsd205 =	$BSOcell(Nromcs, BSreg204,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNromcs)
                  => (BSreg205)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd206 =	$BSOcell(mclk, BSreg205,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Tmclk)
                  => (BSreg206)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd207 =	$BSOcell(dbe, BSreg206,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Tdbe)
                  => (BSreg207)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd208 =	$BSIOcell(TNfiqin, Nfiq, BSreg207,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Nfiqin, TNfiq)
                  => (BSreg209)  WITH (delay=(bsiocell=IOMDTBSOUT))

 bsd210 =	$BSOutNencell(por, BSreg209,
		     driveout,ecapclkbs,icapclkbs,shclkbs,
		     pclkbs,bstck2,rstclkbs,Nhighz,
                     TNenfiq)
                  => (BSreg210)  WITH (delay=(bsoutnencell=IOMDTBSEN))

 bsd211 =	$BSOcell(Nirq, BSreg210,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     TNirq)
                  => (BSreg211)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd212 =	$BSOcell(rclk, BSreg211,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Trclk)
                  => (BSreg212)  WITH (delay=(bsocell=IOMDTBSOUT))

 bsd213 =	$BSIcell(TNmreq, BSreg212,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Nmreq)
                  => (BSreg213)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd214 =	$BSIcell(TNpreq, BSreg213,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Npreq)
                  => (BSreg214)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd215 =	$BSIBcell(Ta[0:28], BSreg214,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     a[0:28])
                  => (BSreg243)  WITH (delay=(bsibcell=IOMDTBSIN))

 bsd244 =	$BSIcell(TNrw, BSreg243,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Nrw)
                  => (BSreg244)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd245 =	$BSIcell(TNbw, BSreg244,
                     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
                     Nbw)
                  => (BSreg245)  WITH (delay=(bsicell=IOMDTBSIN))

 bsd246 =	$BSOutNencell(Neniicd, BSreg245,
		     driveout,ecapclkbs,icapclkbs,shclkbs,
		     pclkbs,bstck2,rstclkbs,Nhighz,
                     TNeniicd)
                  => (BSreg246)  WITH (delay=(bsoutnencell=IOMDTBSEN))

 bsd247 =	$BSIOcell(Tiicdin, iicdout, BSreg246,
		     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
		     iicdin, Tiicdout)
                  => (BSreg248)  WITH (delay=(bsiocell=IOMDTBSOUT))

 bsd249 =	$BSOutNencell(Neniicc, BSreg248,
		     driveout,ecapclkbs,icapclkbs,shclkbs,
		     pclkbs,bstck2,rstclkbs,Nhighz,
                     TNeniicc)
                  => (BSreg249)  WITH (delay=(bsoutnencell=IOMDTBSEN))

 bsd250 =	$BSIOcell(Tiiccin, iiccout, BSreg249,
		     driveout,ecapclkbs,icapclkbs,shclkbs,pclkbs,bstck2,
		     iiccin, Tiiccout)
                  => (BSreg251)  WITH (delay=(bsiocell=IOMDTBSOUT))

END {IOMD}
